home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 3 / Cream of the Crop 3.iso / comm / wnos5src.zip / ASYVEC.ASM < prev    next >
Assembly Source File  |  1993-08-09  |  3KB  |  192 lines

  1. ; ASY (8250/16550A "com" port) interrupt hooks
  2. ; Copyright 1991 Phil Karn, KA9Q
  3.  
  4.     .MODEL    MEMMOD,C
  5.     %MACS
  6.  
  7.     extrn    doret:proc,asyint:far,eoi:proc
  8.  
  9.     .DATA
  10.     extrn    Sssave:word
  11.     extrn    Spsave:word
  12.     extrn    Stktop
  13.  
  14.     .CODE
  15. dbase    dw    @data
  16.  
  17. ; asy0vec - asynch channel 0 interrupt handler
  18.     public    asy0vec
  19.     label    asy0vec    far
  20.     push    ds        ; save on user stack
  21.     mov    ds,cs:dbase    ; establish interrupt data segment
  22.  
  23.     mov    Sssave,ss    ; stash user stack context
  24.     mov    Spsave,sp
  25.  
  26.     mov    ss,cs:dbase
  27.     lea    sp,Stktop
  28.  
  29.     push    ax        ; save user regs on interrupt stack
  30.     push    bx
  31.     push    cx
  32.     push    dx
  33.     push    bp
  34.     push    si
  35.     push    di
  36.     push    es
  37.     call    eoi
  38.  
  39.     mov    ax,0        ; arg for service routine
  40.     push    ax
  41.     call    asyint
  42.     inc    sp
  43.     inc    sp
  44.     jmp    doret
  45.  
  46. ; asy1vec - asynch channel 1 interrupt handler
  47.     public    asy1vec
  48.     label    asy1vec    far
  49.     push    ds        ; save on user stack
  50.     mov    ds,cs:dbase    ; establish interrupt data segment
  51.  
  52.     mov    Sssave,ss    ; stash user stack context
  53.     mov    Spsave,sp
  54.  
  55.     mov    ss,cs:dbase
  56.     lea    sp,Stktop
  57.  
  58.     push    ax        ; save user regs on interrupt stack
  59.     push    bx
  60.     push    cx
  61.     push    dx
  62.     push    bp
  63.     push    si
  64.     push    di
  65.     push    es
  66.     call    eoi
  67.  
  68.     mov    ax,1        ; arg for service routine
  69.     push    ax
  70.     call    asyint
  71.     inc    sp
  72.     inc    sp
  73.     jmp    doret
  74.  
  75. ; asy2vec - asynch channel 2 interrupt handler
  76.     public    asy2vec
  77.     label    asy2vec far
  78.     push    ds        ; save on user stack
  79.     mov    ds,cs:dbase    ; establish interrupt data segment
  80.  
  81.     mov    Sssave,ss    ; stash user stack context
  82.     mov    Spsave,sp
  83.  
  84.     mov    ss,cs:dbase
  85.     lea    sp,Stktop
  86.  
  87.     push    ax        ; save user regs on interrupt stack
  88.     push    bx
  89.     push    cx
  90.     push    dx
  91.     push    bp
  92.     push    si
  93.     push    di
  94.     push    es
  95.     call    eoi
  96.  
  97.     mov    ax,2        ; arg for service routine
  98.     push    ax
  99.     call    asyint
  100.     inc    sp
  101.     inc    sp
  102.     jmp    doret
  103.  
  104. ; asy3vec - asynch channel 3 interrupt handler
  105.     public    asy3vec
  106.     label    asy3vec far
  107.     push    ds        ; save on user stack
  108.     mov    ds,cs:dbase    ; establish interrupt data segment
  109.  
  110.     mov    Sssave,ss    ; stash user stack context
  111.     mov    Spsave,sp
  112.  
  113.     mov    ss,cs:dbase
  114.     lea    sp,Stktop
  115.  
  116.     push    ax        ; save user regs on interrupt stack
  117.     push    bx
  118.     push    cx
  119.     push    dx
  120.     push    bp
  121.     push    si
  122.     push    di
  123.     push    es
  124.     call    eoi
  125.  
  126.     mov    ax,3        ; arg for service routine
  127.     push    ax
  128.     call    asyint
  129.     inc    sp
  130.     inc    sp
  131.     jmp    doret
  132.  
  133. ; asy4vec - asynch channel 4 interrupt handler
  134.     public    asy4vec
  135.     label    asy4vec far
  136.     push    ds        ; save on user stack
  137.     mov    ds,cs:dbase    ; establish interrupt data segment
  138.  
  139.     mov    Sssave,ss    ; stash user stack context
  140.     mov    Spsave,sp
  141.  
  142.     mov    ss,cs:dbase
  143.     lea    sp,Stktop
  144.  
  145.     push    ax        ; save user regs on interrupt stack
  146.     push    bx
  147.     push    cx
  148.     push    dx
  149.     push    bp
  150.     push    si
  151.     push    di
  152.     push    es
  153.     call    eoi
  154.  
  155.     mov    ax,4        ; arg for service routine
  156.     push    ax
  157.     call    asyint
  158.     inc    sp
  159.     inc    sp
  160.     jmp    doret
  161.  
  162. ; asy5vec - asynch channel 5 interrupt handler
  163.     public    asy5vec
  164.     label    asy5vec far
  165.     push    ds        ; save on user stack
  166.     mov    ds,cs:dbase    ; establish interrupt data segment
  167.  
  168.     mov    Sssave,ss    ; stash user stack context
  169.     mov    Spsave,sp
  170.  
  171.     mov    ss,cs:dbase
  172.     lea    sp,Stktop
  173.  
  174.     push    ax        ; save user regs on interrupt stack
  175.     push    bx
  176.     push    cx
  177.     push    dx
  178.     push    bp
  179.     push    si
  180.     push    di
  181.     push    es
  182.     call    eoi
  183.  
  184.     mov    ax,5        ; arg for service routine
  185.     push    ax
  186.     call    asyint
  187.     inc    sp
  188.     inc    sp
  189.     jmp    doret
  190.  
  191.     end
  192.